AJAX (Asynchronous JavaScript and XML) 是一種使用 JavaScript 來進行非同步網絡請求的技術。它允許網頁從伺服器獲取資料而無需重新加載整個頁面。這樣可以讓使用者體驗到更加流暢的互動,並減少頁面加載時間。
雖然名稱裡有 XML,但現代開發更多是用 JSON 來作為資料格式。
基本 AJAX 概念
AJAX 的工作流程是透過 JavaScript 發送 HTTP 請求到伺服器,並在收到回應後進行處理,通常會動態更新頁面的一部分內容。
使用 Fetch API
fetch() 是現代瀏覽器提供的 API,用於發送非同步請求。以下是基本的 fetch() 用法:
fetch('https://jsonplaceholder.typicode.com/posts')
.then(response => response.json()) // 將回應轉換為 JSON
.then(data => console.log(data)) // 在控制台印出資料
.catch(error => console.error('Error:', error));
範例:AJAX 動態載入內容
這是一個簡單的範例,當用戶點擊按鈕時,通過 AJAX 從伺服器獲取資料並動態顯示在頁面上。
<!DOCTYPE html>
<html lang="zh-TW">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>AJAX 範例</title>
</head>
<body>
<button id="loadData">載入資料</button>
<div id="content"></div>
<script>
const button = document.getElementById('loadData');
const contentDiv = document.getElementById('content');
button.addEventListener('click', function() {
fetch('https://jsonplaceholder.typicode.com/posts/1')
.then(response => response.json())
.then(data => {
contentDiv.innerHTML = `
<h2>${data.title}</h2>
<p>${data.body}</p>
`;
})
.catch(error => console.error('Error:', error));
});
</script>
</body>
</html>
在這個範例中,按下按鈕後,頁面會向 API 請求一篇文章,並將回應的資料動態顯示在頁面上。
非同步操作與 Promise
在 JavaScript 中,非同步操作通常會使用 Promise 來處理。Promise 代表一個尚未完成但最終會返回結果(成功或失敗)的操作。
你可以用 then() 方法來鏈接一連串的操作,或使用 async/await 語法讓程式碼看起來更加直觀。
範例:async/await
async function loadData() {
try {
const response = await fetch('https://jsonplaceholder.typicode.com/posts/1');
const data = await response.json();
console.log(data);
} catch (error) {
console.error('Error:', error);
}
}
loadData();
使用 *async/await *可以讓非同步操作寫起來像同步操作一樣,這樣的程式碼更加易讀。
在第十六天,更熟悉了 AJAX 與 非同步操作。通過這些技術,網頁可以實現更加靈活的動態內容加載,提升用戶體驗。明天,會繼續深入探討 AJAX 在實際專案中的應用,並且學習如何處理更加複雜的非同步邏輯。